/**
 * 格式化日期时间
 * @param {string | Date | Object} date 日期时间（支持 Date、LocalDateTime、string 类型）
 * @returns {string} 格式化后的日期时间字符串 YYYY-MM-DD HH:mm:ss
 */
export function formatDateTime(date) {
    if (!date) return ''

    // 处理 LocalDateTime 类型
    if (typeof date === 'object' && 'year' in date) {
        const year = String(date.year)
        const month = String(date.monthValue).padStart(2, '0')
        const day = String(date.dayOfMonth).padStart(2, '0')
        const hour = String(date.hour).padStart(2, '0')
        const minute = String(date.minute).padStart(2, '0')
        const second = String(date.second).padStart(2, '0')
        return `${year}-${month}-${day} ${hour}:${minute}:${second}`
    }

    // 处理 Date 类型和字符串类型
    const d = new Date(date)
    const year = d.getFullYear()
    const month = String(d.getMonth() + 1).padStart(2, '0')
    const day = String(d.getDate()).padStart(2, '0')
    const hour = String(d.getHours()).padStart(2, '0')
    const minute = String(d.getMinutes()).padStart(2, '0')
    const second = String(d.getSeconds()).padStart(2, '0')
    return `${year}-${month}-${day} ${hour}:${minute}:${second}`
}

/**
 * 格式化日期
 * @param {string | Date | Object} date 日期（支持 Date、LocalDate、string 类型）
 * @returns {string} 格式化后的日期字符串 YYYY-MM-DD
 */
export function formatDate(date) {
    if (!date) return ''
    
    // 处理 LocalDate 类型
    if (typeof date === 'object' && 'year' in date) {
        const year = String(date.year)
        const month = String(date.monthValue).padStart(2, '0')
        const day = String(date.dayOfMonth).padStart(2, '0')
        return `${year}-${month}-${day}`
    }

    // 处理 Date 类型和字符串类型
    const d = new Date(date)
    const year = d.getFullYear()
    const month = String(d.getMonth() + 1).padStart(2, '0')
    const day = String(d.getDate()).padStart(2, '0')
    return `${year}-${month}-${day}`
}

/**
 * 时间格式化
 * @param {Date | string | Object} time 时间（支持 Date、LocalTime、string、number 类型）
 * @returns {string} 格式化后的时间字符串 HH:mm:ss
 */
export function formatTime(time) {
    if (!time) return '';

    // 处理 LocalTime 类型
    if (typeof time === 'object' && 'hour' in time) {
        const hours = String(time.hour).padStart(2, '0');
        const minutes = String(time.minute).padStart(2, '0');
        const seconds = String(time.second).padStart(2, '0');
        return `${hours}:${minutes}:${seconds}`;
    }

    if (typeof time === 'string') {
        if (time.indexOf(':') > -1 && time.indexOf('T') === -1) {
            time = `2000/01/01 ${time}`;
        }
        time = new Date(time.replace(/-/g, '/'));
    }
    if (typeof time === 'number') {
        time = new Date(time);
    }

    const hours = time.getHours().toString().padStart(2, '0');
    const minutes = time.getMinutes().toString().padStart(2, '0');
    const seconds = time.getSeconds().toString().padStart(2, '0');
    return `${hours}:${minutes}:${seconds}`;
}
